pub fn dp_rec_mc(amount: u32) -> u32 {
    let coins = vec![1, 2, 5, 10, 20, 30, 50, 100];
    let mut amt = amount;
    let mut count = 0;
    let mut i = coins.len() - 1;

    while amt > 0 {
      
        while i > 0 && coins[i] > amt {
            i -= 1;
        }

        if coins[i] > amt {
            break;
        }

        amt -= coins[i];
        count += 1;
    }

    if amt == 0 {
        count
    } else {
        u32::MAX 
    }
}